/*
排队排列问题
题目描述
有B 个男孩，G 个女孩，要求所有男孩女孩排成一队，连续的男孩个数不可以超过K 个，问一共有多少种排法。

（结果需要mod 10007）

输入格式
输入包含三个整数B ，G ，K ，分别表示男孩的数量、女孩的数量和允许的最大连续男孩数。

输出格式
输出一个整数，表示满足条件的排列方法数对10007 取模后的结果。

输入样例
2 1 1
输出样例
2
*/
#include <bits/stdc++.h>
using namespace std;
const int MOD = 10007;

int main() {
    int B, G, K;
    cin >> B >> G >> K;

    // dp[b][g][x][c]
    // x: 0=girl, 1=boy
    // c: consecutive boys count if x=1, 0 if x=0
    static int dp[105][105][2][105] = {0};

    // initial: start with boy or girl
    if (B > 0) dp[1][0][1][1] = 1;
    if (G > 0) dp[0][1][0][0] = 1;

    for (int b = 0; b <= B; ++b) {
        for (int g = 0; g <= G; ++g) {
            for (int x = 0; x < 2; ++x) {
                for (int c = 0; c <= K; ++c) {
                    if (dp[b][g][x][c] == 0) continue;

                    int ways = dp[b][g][x][c];

                    if (x == 0) { // last is girl
                        if (b < B) dp[b+1][g][1][1] = (dp[b+1][g][1][1] + ways) % MOD;
                        if (g < G) dp[b][g+1][0][0] = (dp[b][g+1][0][0] + ways) % MOD;
                    } else { // last is boy
                        if (b < B && c < K) dp[b+1][g][1][c+1] = (dp[b+1][g][1][c+1] + ways) % MOD;
                        if (g < G) dp[b][g+1][0][0] = (dp[b][g+1][0][0] + ways) % MOD;
                    }
                }
            }
        }
    }

    int ans = 0;
    for (int c = 0; c <= K; ++c) ans = (ans + dp[B][G][0][c]) % MOD;
    for (int c = 1; c <= K; ++c) ans = (ans + dp[B][G][1][c]) % MOD;

    cout << ans << endl;
    return 0;
}
